﻿//2001. 可互换矩形的组数
//用一个下标从 0 开始的二维整数数组 rectangles 来表示 n 个矩形，其中 rectangles[i] = [widthi, heighti] 表示第 i 个矩形的宽度和高度。
//如果两个矩形 i 和 j（i < j）的宽高比相同，则认为这两个矩形 可互换 。
//更规范的说法是，两个矩形满足 widthi / heighti == widthj / heightj（使用实数除法而非整数除法），则认为这两个矩形 可互换 。
//计算并返回 rectangles 中有多少对 可互换 矩形。

class Solution {
public:
    long long interchangeableRectangles(vector<vector<int>>& rectangles)
    {
        long long ans = 0;
        unordered_map<double, int> cnt;
        for (auto x : rectangles)
        {
            double k = 1.0 * x[0] / x[1];
            ans += cnt[k];
            cnt[k]++;
        }
        return ans;
    }
};